package entidades;

import java.io.Serializable;
import java.util.GregorianCalendar;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@Entity
@Table(name="solicitudesCotizacion")
public class Cotizacion implements Serializable{
	@Id
	private int id;
	private GregorianCalendar fechaValidez;
	@OneToOne(cascade=CascadeType.ALL)
	@PrimaryKeyJoinColumn
	private Cliente cliente;
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="idCotizacion")
	private Set<Item> items;
	private boolean estaCotizado;
	private GregorianCalendar fechaRemisionCliente;	
	@OneToOne(cascade = CascadeType.ALL)
	@JoinColumn(name="idSucursal")
	private OficinaVenta sucursal;
	
	public Cotizacion() {
		super();
	}
	public Cotizacion(GregorianCalendar fechaValidez, Cliente cliente,
			Set<Item> items) {
		super();
		this.fechaValidez = fechaValidez;
		this.cliente = cliente;
		this.items = items;
		this.fechaRemisionCliente = null;
		this.estaCotizado = false;
	}
	public boolean isEstaCotizado() {
		return estaCotizado;
	}
	public void setEstaCotizado(boolean estaCotizado) {
		this.estaCotizado = estaCotizado;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public GregorianCalendar getFechaValidez() {
		return fechaValidez;
	}
	public void setFechaValidez(GregorianCalendar fechaValidez) {
		this.fechaValidez = fechaValidez;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	public Set<Item> getItems() {
		return items;
	}
	public void setItems(Set<Item> items) {
		this.items = items;
	}
	public GregorianCalendar getFechaRemisionCliente() {
		return fechaRemisionCliente;
	}
	public void setFechaRemisionCliente(GregorianCalendar fechaRemisionCliente) {
		this.fechaRemisionCliente = fechaRemisionCliente;
	}
	public Item getItem(Item item){
		for ( Item i : this.items){
			if (i== item){
				return i;
			}
		}
		return null;
	}
	public Cotizacion(int id, GregorianCalendar fechaValidez, Cliente cliente,
			Set<Item> items, boolean estaCotizado,
			GregorianCalendar fechaRemisionCliente, OficinaVenta sucursal) {
		super();
		this.id = id;
		this.fechaValidez = fechaValidez;
		this.cliente = cliente;
		this.items = items;
		this.estaCotizado = estaCotizado;
		this.fechaRemisionCliente = fechaRemisionCliente;
		this.sucursal = sucursal;
	}
	public OficinaVenta getSucursal() {
		return sucursal;
	}
	public void setSucursal(OficinaVenta sucursal) {
		this.sucursal = sucursal;
	}
	
}
